package br.com.unioConci.upload.vo;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

import br.com.r2.util.tipodado.Data;
import br.com.r2.util.tipodado.DataHora;
import br.com.r2.util.tipodado.Flag;
import br.com.r2.util.tipodado.InteiroLongo;
import br.com.r2.util.tipodado.Moeda;
import br.com.r2.util.tipodado.Texto;
import br.com.unioConci.cadastro.vo.LocalPagamentoVo;
import br.com.unioConci.seguranca.vo.UsuarioVo;
import br.com.unioConci.upload.vo.filtro.FiltroArquivoVo;

@Entity
@Table(name = "TBCFA")
@Proxy(lazy = true)
public class ArquivoFinanceiroAnaliticoVo implements Serializable
{

   /**
    * 
    */
   private static final long serialVersionUID = -3168131789275351894L;

   @Id
   @Column(name = "CFACD")
   @GeneratedValue(generator = "InteiroSequenceGenerator")
   @GenericGenerator(name = "InteiroSequenceGenerator", strategy = "br.com.r2.util.tipodado.hibernate.generator.InteiroSequenceGenerator", parameters = { @Parameter(name = "sequence", value = "SQCFA") })
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
   private InteiroLongo codigo;

   @Column(name = "CFADTBXA")
   @Type(type = "br.com.r2.util.tipodado.hibernate.DataUT")
   private Data dataBaixa;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "LPGCD")
   private LocalPagamentoVo localPagamentoVo;

   @Column(name = "CFAVLPGT")
   @Type(type = "br.com.r2.util.tipodado.hibernate.MoedaUT")
   private Moeda valorPagamento;

   @Column(name = "CFACDCLI")
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
   private InteiroLongo codigoCliente;

   @Column(name = "CFANMCLI")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto nomeCliente;

   @Column(name = "CFACDCTR")
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
   private InteiroLongo codigoContrato;

   @Column(name = "CFAFGATV")
   @Type(type = "br.com.r2.util.tipodado.hibernate.FlagUT")
   private Flag situacao;

   @Column(name = "CFAFGCNC")
   @Type(type = "br.com.r2.util.tipodado.hibernate.FlagUT")
   private Flag flagConciliado;

   @Column(name = "CFACDFTR")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto fatura;

   @Column(name = "USRDTINC")
   @Type(type = "br.com.r2.util.tipodado.hibernate.DataHoraUT")
   private DataHora dataInclusao;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "USRCDINC")
   private UsuarioVo usuarioInclusaoVo;

   @Column(name = "USRDTCNC")
   @Type(type = "br.com.r2.util.tipodado.hibernate.DataHoraUT")
   private DataHora dataConciliacao;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "USRCDCNC")
   private UsuarioVo usuarioConciliacaoVo;

   @Transient
   private FiltroArquivoVo filtro;

   @Transient
   private boolean exibirListaRazao;

   @Transient
   private Moeda valorTotalPagamento;
   
   @Transient
   private List<ArquivoRazaoAnaliticoVo> listaRazaoAnalitico;

   public InteiroLongo getCodigo()
   {
      return codigo;
   }

   public void setCodigo(InteiroLongo codigo)
   {
      this.codigo = codigo;
   }

   public Data getDataBaixa()
   {
      return dataBaixa;
   }

   public void setDataBaixa(Data dataBaixa)
   {
      this.dataBaixa = dataBaixa;
   }

   public LocalPagamentoVo getLocalPagamentoVo()
   {
      return localPagamentoVo;
   }

   public void setLocalPagamentoVo(LocalPagamentoVo localPagamentoVo)
   {
      this.localPagamentoVo = localPagamentoVo;
   }

   public Moeda getValorPagamento()
   {
      return valorPagamento;
   }

   public void setValorPagamento(Moeda valorPagamento)
   {
      this.valorPagamento = valorPagamento;
   }

   public InteiroLongo getCodigoCliente()
   {
      return codigoCliente;
   }

   public void setCodigoCliente(InteiroLongo codigoCliente)
   {
      this.codigoCliente = codigoCliente;
   }

   public Texto getNomeCliente()
   {
      return nomeCliente;
   }

   public void setNomeCliente(Texto nomeCliente)
   {
      this.nomeCliente = nomeCliente;
   }

   public InteiroLongo getCodigoContrato()
   {
      return codigoContrato;
   }

   public void setCodigoContrato(InteiroLongo codigoContrato)
   {
      this.codigoContrato = codigoContrato;
   }

   public Flag getSituacao()
   {
      return situacao;
   }

   public void setSituacao(Flag situacao)
   {
      this.situacao = situacao;
   }

   public Flag getFlagConciliado()
   {
      return flagConciliado;
   }

   public void setFlagConciliado(Flag flagConciliado)
   {
      this.flagConciliado = flagConciliado;
   }

   public DataHora getDataInclusao()
   {
      return dataInclusao;
   }

   public void setDataInclusao(DataHora dataInclusao)
   {
      this.dataInclusao = dataInclusao;
   }

   public UsuarioVo getUsuarioInclusaoVo()
   {
      return usuarioInclusaoVo;
   }

   public void setUsuarioInclusaoVo(UsuarioVo usuarioInclusaoVo)
   {
      this.usuarioInclusaoVo = usuarioInclusaoVo;
   }

   public DataHora getDataConciliacao()
   {
      return dataConciliacao;
   }

   public void setDataConciliacao(DataHora dataConciliacao)
   {
      this.dataConciliacao = dataConciliacao;
   }

   public UsuarioVo getUsuarioConciliacaoVo()
   {
      return usuarioConciliacaoVo;
   }

   public void setUsuarioConciliacaoVo(UsuarioVo usuarioConciliacaoVo)
   {
      this.usuarioConciliacaoVo = usuarioConciliacaoVo;
   }

   public Texto getFatura()
   {
      return fatura;
   }

   public void setFatura(Texto fatura)
   {
      this.fatura = fatura;
   }

   public FiltroArquivoVo getFiltro()
   {
      return filtro;
   }

   public void setFiltro(FiltroArquivoVo filtro)
   {
      this.filtro = filtro;
   }

   public List<ArquivoRazaoAnaliticoVo> getListaRazaoAnalitico()
   {
      return listaRazaoAnalitico;
   }

   public void setListaRazaoAnalitico(List<ArquivoRazaoAnaliticoVo> listaRazaoAnalitico)
   {
      this.listaRazaoAnalitico = listaRazaoAnalitico;
   }

   public boolean isExibirListaRazao()
   {
      return exibirListaRazao;
   }

   public void setExibirListaRazao(boolean exibirListaRazao)
   {
      this.exibirListaRazao = exibirListaRazao;
   }

   public Moeda getValorTotalPagamento()
   {
      return valorTotalPagamento;
   }

   public void setValorTotalPagamento(Moeda valorTotalPagamento)
   {
      this.valorTotalPagamento = valorTotalPagamento;
   }
}
